home *** CD-ROM | disk | FTP | other *** search
- /*
- CLIPWATCH
- LECTURE DES INFORMATIONS DES TELETRANS CLIP / FORCE (Constructeur WIT)
- http://www.wit.fr
-
- Marc Le Douarain , Décembre 1998
- mavati@club-internet.fr
- http://perso.club-internet.fr/mavati
- http://www.multimania.com/mavati
- "Conçu" (sur papier) en partie à la résidence des jeunes, St Nazaire.
-
- Dernière mise à jour : 29 décembre 2000
-
-
- Note : modifs à faire dans ClipWatch_gui.c après génération par MUIBuilder
- -Ligne 10 : NON!!!!!!!//#include "ClipWatch_GuiExtern.h"
- -Ligne 307: Object->ListEtats => MUIA_List_Title,TRUE,
- -Ligne 324: Object->ListJournal => MUIA_List_Title,TRUE,
- -Ligne 829: Object->App => MUIA_Application_Version, "$VER:ClipW..... _DATE,
- -Ligne 873: 'MUIV_EveryTime' => 2 (Page 2, pour l'Object->ListJournal)
- -Ligne 880: 'MUIV_EveryTime' => 1 (Page 1, pour l'Object->ListEtats)
- -Ligne 447: rajouter : Child, Object->GraphTrace,
- -Ligne 435: rajouter : Object->GraphTrace = NewObject(mccgraph->mcc_Class,NULL,
- TextFrame,
- MUIA_Background, MUII_BACKGROUND,
- TAG_DONE),
- Rajouter une ligne avec APTR GraphTrace dans ClipWatch_gui.h
-
-
- */
-
- /* Generate the MUI Graphical User Interface */
- /* (stdio is faster for tests...!) */
- #define GENERATE_GUI
-
- /* We are under developpement... */
- // #define DEBUG
-
- #include <exec/types.h>
- #include <devices/serial.h>
- #include <dos/dos.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include <clib/alib_protos.h>
- #include <clib/dos_protos.h>
- #include <clib/exec_protos.h>
- #include <clib/intuition_protos.h>
-
-
-
- #define VERSION "0.8.2"
- #define COMPILATION_DATE __DATE__
-
- #include "trsii.h"
- #ifdef GENERATE_GUI
- #include "MUI_demo.h"
- #endif
-
- int TeletransOnLine=FALSE;
- int TeletransOnCall=FALSE;
- struct InfosTeletrans Teletrans;
- struct Ressources * Ress;
- int RefreshType;
- int RefreshParam;
- char * MessagesBox[NBR_MESSAGESBOX];
- char * MessagesBoxMemZone;
- struct Traces Tra[NBR_TRACES];
- char * TabLibellesTraces[NBR_TRACES]; /* Only for the init of the cycle gadget of MUI */
- struct Evenements * Jrnl;
- int JrnlTaille=0;
- char Even_Journal[256];
- long NumLastEven_Journal;
- char Param_Trace[256];
- char DateLastEven_Journal[20];
- struct Str_AffiTraceGraph TraceGraph;
- //time_t * TraHorodates=NULL;
- //double * TraValeurs=NULL;
- //long TraNbrSamples=0;
- //time_t TraTime32Deb,TraTime32Fin;
- struct Str_AffiGraphGene AffiGraphGene;
-
- long MoniteurMode=1;
- #ifndef DEBUG
- long MoniteurActif=FALSE;
- long RecupDesMessages=TRUE;
- #else
- long MoniteurActif=TRUE;
- long RecupDesMessages=FALSE;
- #endif
- long RecupDuJournal=FALSE;
- long RecupDesTraces=TRUE;
- char * ListeSitesConnus=NULL;
-
- char * TrameRecue;
-
- char SerialDevice[50]="serial.device";
- int SerialUnit=0;
- int SerialSpeed=1200;
-
- int SerialInitOk=FALSE; /* Flag set if the serial device is open. */
-
- struct MsgPort *SerialMP = NULL; /* Port for replies to io messages to go to. */
- struct IOExtSer *SerialIO = NULL; /* Data structure used for messages to device. */
- struct IOExtSer *IncomingIO = NULL; /* Structure for incoming characters. */
-
- /* with GCC without libnix (-noixemul) */
- struct Library *IntuitionBase = NULL;
- struct Library *GfxBase = NULL;
- struct Library *UtilityBase = NULL;
-
- #ifdef GENERATE_GUI
- struct ObjApp * App = NULL;
- static APTR WI_AboutMUI;
- struct MUI_CustomClass *mccgraph;
- #endif
-
- void ErrorMessageRequest(char *string);
- void DisplayStatus(char *string);
- void convert_long_to_asciidate(time_t tps,char * ch,char * ch_time);
-
- #ifdef GENERATE_GUI
- #include "GraphClass.c"
- #include "ClipWatch_Gui.c"
- #endif
-
- #include "strings.c"
- #include "serial-modem.c"
- #include "trsii.c"
- #include "misc.c"
-
-
-
- void DisplayStatus(char *string)
- {
- #ifndef GENERATE_GUI
- printf("%s\n",string);
- #else
- set(App->ComState,MUIA_Text_Contents,string);
- #endif
- }
-
- void ErrorMessageRequest(char *string)
- {
- #ifndef GENERATE_GUI
- printf("%s\n",string);
- #else
- MUI_Request(App->App, App->WI_Main, 0, NULL, "OK", string);
- DisplayStatus("");
- #endif
- }
-
- /* ################################################ */
- /* Ajout d'un événement dans le Journal (structure) */
- /* ################################################ */
- int AddEvenInJrnl(char * Even,int RefreshList)
- {
- char * EvenOffset;
- int Ok=FALSE;
- int i;
- int NewMemAlloc=FALSE;
- // long ActiveEntryInJrnl;
-
- JrnlTaille++;
- // On alloue 100 evens par 100 evens pour limiter le nbr de reconstruction de la liste...
- if ( (((JrnlTaille-1)%100)==0) || (Jrnl==NULL) )
- {
- Jrnl=(struct Evenements *)realloc(Jrnl,(JrnlTaille+100)*sizeof(struct Evenements));
- if (Jrnl==NULL)
- {
- ErrorMessageRequest("Could not alloc enough memory (for evenements)");
- Appli_CloseAll();
- exit(30);
- }
- else
- {
- NewMemAlloc=TRUE;
- }
- }
- if (Jrnl)
- {
- strcpy_termnotnull(Jrnl[JrnlTaille-1].Index,Even,9,0);
- sprintf(Jrnl[JrnlTaille-1].Date,"%c%c/%c%c/%c%c%c%c %c%c:%c%c:%c%c",Even[11],Even[12],Even[9],Even[10],Even[5],Even[6],Even[7],Even[8],Even[13],Even[14],Even[15],Even[16],Even[17],Even[18]);
- EvenOffset=str_field(Even,128,5,9);
- if (EvenOffset)
- strcpy_termnotnull(Jrnl[JrnlTaille-1].NumRess,EvenOffset,9,0);
- EvenOffset=str_field(Even,128,6,9);
- if (EvenOffset)
- strcpy_termnotnull(Jrnl[JrnlTaille-1].LibelleRess,EvenOffset,9,0);
- EvenOffset=str_field(Even,128,8,9);
- if (EvenOffset)
- strcpy_termnotnull(Jrnl[JrnlTaille-1].EtatRess,EvenOffset,9,0);
- EvenOffset=str_field(Even,128,9,9);
- if (EvenOffset)
- {
- Jrnl[JrnlTaille-1].Classe[0]=EvenOffset[1];
- Jrnl[JrnlTaille-1].Classe[1]='\0';
- Jrnl[JrnlTaille-1].Zone[0]=EvenOffset[4];
- Jrnl[JrnlTaille-1].Zone[1]='\0';
- Jrnl[JrnlTaille-1].Code[0]=EvenOffset[7];
- Jrnl[JrnlTaille-1].Code[1]='\0';
- Ok=TRUE;
- #ifdef GENERATE_GUI
- if (NewMemAlloc)
- {
- /* Comme il y a eu un REALLOC, il faut tout recréer la liste : pointeurs vers
- chaines plus valides */
- // get(App->ListJournal,MUIA_List_Active,&ActiveEntryInJrnl);
- if (RefreshList)
- set(App->ListJournal,MUIA_List_Quiet,TRUE);
- DoMethod(App->ListJournal,MUIM_List_Clear);
- for(i=0;i<JrnlTaille;i++)
- {
- DoMethod(App->ListJournal,MUIM_List_InsertSingle,&Jrnl[i],MUIV_List_Insert_Bottom);
- }
- if (RefreshList)
- set(App->ListJournal,MUIA_List_Quiet,FALSE);
- // if (ActiveEntryInJrnl>-1)
- // set(App->ListJournal,MUIA_List_Active,ActiveEntryInJrnl);
- }
- else
- {
- DoMethod(App->ListJournal,MUIM_List_InsertSingle,&Jrnl[JrnlTaille-1],MUIV_List_Insert_Bottom);
- }
- if (RefreshList)
- set(App->ListJournal,MUIA_List_Active,MUIV_List_Active_Bottom);
- #endif
- }
- }
- return Ok;
- }
-
- /* ######################################################################### */
- /* Génération du gadget MUI Cycle, contenant la liste des traces disponibles */
- /* ######################################################################### */
- #ifdef GENERATE_GUI
- void UpdateMUICycleTraces(void)
- {
- int i,j=0;
- for (i=1;i<NBR_TRACES;i++)
- {
- /* Trace paramétrée ? (pour affichage dans gadget Cycle MUI) */
- if(Tra[i].Used=='M')
- {
- TabLibellesTraces[j]=Tra[i].NumMenu;
- j++;
- }
- }
- /* Dernière entrée de la liste de pointeurs : NULL */
- TabLibellesTraces[j]=NULL;
- set(App->ChoixTraces,MUIA_Cycle_Entries,TabLibellesTraces);
- set(App->ChoixTraces,MUIA_Cycle_Active,0);
- }
-
- /* Renvoie le numéro de la ligne sélectionnée qui servira à se positionner
- dans un gadget Cycle selon la chaine désirée */
- /* En entrée : tableau de pointeurs de chaines du cycle */
- /* : pointeur sur la chaine recherchée */
- int GetMUICycleToSet(char ** CycleDataPtr,char * Wanted)
- {
- int num=0;
- int Fnd=FALSE;
- char * ptchaine;
- do
- {
- ptchaine=CycleDataPtr[num];
- if (strcmp(ptchaine,Wanted)==0)
- Fnd=TRUE;
- if (!Fnd)
- {
- num++;
- }
- }
- while( (*ptchaine!=NULL) && (!Fnd) );
- if (!Fnd)
- num=0;
- return num;
- }
- /* Renvoie un pointeur sur le contenu du gadget Cycle sélectionné */
- /* En entrée : tableau de pointeurs de chaines du cycle */
- /* : entier sur la sélection du cycle */
- char * GetMUICycleString(char ** CycleDataPtr, int NumCycleSelected)
- {
- int num=0;
- char * ptchaine=CycleDataPtr[num];
- if (NumCycleSelected>0)
- {
- do
- {
- num++;
- ptchaine=CycleDataPtr[num];
- }
- while( (num<NumCycleSelected) && (*ptchaine!=0) );
- }
- return ptchaine;
- }
- #endif
-
-
-
- /* ----------------------------------------- */
- /* Lecture depuis le disque du fichier trace */
- /* ----------------------------------------- */
- long load_trace_fm_disk(char * Fichier,time_t StartHorodate,time_t EndHorodate)
- {
- FILE * FTrace;
- time_t TimeSampleDiskBalayage;
- long i=0;
- time_t * Horodates;
- double * Valeurs;
- if (TraceGraph.Horodates==NULL)
- Horodates=(time_t *)malloc(sizeof(time_t)*2500);
- else
- Horodates=TraceGraph.Horodates;
- if (TraceGraph.Valeurs==NULL)
- Valeurs=(double *)malloc(sizeof(double)*2500);
- else
- Valeurs=TraceGraph.Valeurs;
-
- if ( (Horodates==NULL) || (Valeurs==NULL) )
- return(0);
- TraceGraph.Horodates=Horodates;
- TraceGraph.Valeurs=Valeurs;
- FTrace=fopen(Fichier,"rb");
- if (FTrace)
- {
- double ValSample;
- int FinFic;
- /* Recherche du 1er échantillon */
- do
- {
- FinFic=fread(&TimeSampleDiskBalayage,sizeof(time_t),1,FTrace);
- if (FinFic!=0)
- fread(&ValSample,sizeof(double),1,FTrace);
- }
- while( (FinFic!=0) && (TimeSampleDiskBalayage<StartHorodate) );
- /* Remplissage de la mémoire avec les échantillons demandés */
- if (FinFic!=0)
- {
- do
- {
- FinFic=fread(&TimeSampleDiskBalayage,sizeof(time_t),1,FTrace);
- if (FinFic!=0)
- {
- Horodates[i]=TimeSampleDiskBalayage;
- FinFic=fread(&ValSample,sizeof(double),1,FTrace);
- if (FinFic!=0)
- {
- Valeurs[i]=ValSample;
- if (TimeSampleDiskBalayage<EndHorodate)
- i++;
- if (i>=2500)
- {
- /* TEMPORAIRE a revoir */
- printf("Memory Overflow... Partie chargement de trace\n");
- exit(30);
- }
- }
- }
- }
- while( (FinFic!=0) && (TimeSampleDiskBalayage<EndHorodate) );
- }
- fclose(FTrace);
- }
- return(i);
- }
-
- /* ---------------------------------------------- */
- /* Libération de la mémoire utilisée par la trace */
- /* ---------------------------------------------- */
- void free_trace(time_t * Horodates[],double * Valeurs[])
- {
- if (*Horodates)
- {
- free((void *)*Horodates);
- *Horodates=NULL;
- }
- if (*Valeurs)
- {
- free((void *)*Valeurs);
- *Valeurs=NULL;
- }
- }
-
- /* ----------------------------------------------- */
- /* Affichage de la trace sous forme numérique dans */
- /* le list-view */
- /* ----------------------------------------------- */
- void show_trace_digital(int LibererMem,long NbrSmp,time_t TabHD[],double TabVal[])
- {
- static struct AffiTraceNum * TraceAscii=NULL;
- static long TailleMemTrace;
- long i;
- /* Quelque chose à afficher ? */
- if (NbrSmp==0)
- {
- #ifdef GENERATE_GUI
- DoMethod(App->ListTraceNum,MUIM_List_Clear);
- #endif
- }
- else
- {
- /* Allocation mémoire */
- /* si première fois ou plus d'échantillons à afficher que précédement */
- if ( (NbrSmp!=TailleMemTrace) || (TraceAscii==NULL) )
- {
- if (TraceAscii)
- {
- free(TraceAscii);
- TraceAscii=NULL;
- }
- if (TraceAscii==NULL)
- {
- TraceAscii=(struct AffiTraceNum *)malloc(sizeof(struct AffiTraceNum)*NbrSmp);
- TailleMemTrace=NbrSmp;
- }
- }
-
- if (TraceAscii!=NULL)
- {
- /* Conversion en ascii pour affichage */
- for(i=0;i<NbrSmp;i++)
- {
- convert_long_to_asciidate(TabHD[i],TraceAscii[i].Date,TraceAscii[i].Heure);
- sprintf(TraceAscii[i].Valeur," %f",TabVal[i]);
- }
- /* Allez zouc, tout ça dans le list-view */
- #ifdef GENERATE_GUI
- set(App->ListTraceNum,MUIA_List_Quiet,TRUE);
- DoMethod(App->ListTraceNum,MUIM_List_Clear);
- for(i=0;i<NbrSmp;i++)
- {
- DoMethod(App->ListTraceNum,MUIM_List_InsertSingle,&TraceAscii[i],MUIV_List_Insert_Bottom);
- }
- set(App->ListTraceNum,MUIA_List_Quiet,FALSE);
- set(App->ListTraceNum,MUIA_List_Active,MUIV_List_Active_Bottom);
- #endif
- }
- }
- }
-
- /* Return the 32 bits value of time in locale !!! */
- time_t timenow(void)
- {
- time_t t;
- struct tm *p;
- time(&t); // en GMT...
- p=localtime(&t);
- return (mktime(p));
- }
-
- /* ----------------------------------------------------------- */
- /* Conversion d'une valeur 32 bits en chaines ascii JJ/MM/AAAA */
- /* et HH:MM:SS si pointeur sur deuxième chaine non NULL */
- /* ----------------------------------------------------------- */
- void convert_long_to_asciidate(time_t tps,char * ch,char * ch_time)
- {
- struct tm *UnpackT;
-
- UnpackT = localtime(&tps);
- sprintf(ch,"%02d/%02d/%04d",UnpackT->tm_mday,UnpackT->tm_mon+1,1900+UnpackT->tm_year);
- if (ch_time)
- sprintf(ch_time,"%02d:%02d:%02d",UnpackT->tm_hour,UnpackT->tm_min,UnpackT->tm_sec);
- }
- /* -------------------------------------------------------------- */
- /* Conversion de chaines ascii JJ/MM/AAAA et HH:MM:SS si deuxième */
- /* pointeur non NULL, en valeur 32 bits de temps */
- /* -------------------------------------------------------------- */
- time_t convert_asciidate_to_long(char * ch,char * ch_time)
- {
- struct tm DateEnClair;
- int Annee;
- int Mois;
- int Jour;
- int Heure=0,Minute=0,Seconde=0;
- int Offset=0;
- int Valide=TRUE;
- int ValideH;
- time_t TimeRes=0;
- /* LA DATE JJ/MM/AA */
- /* Recherche du jour */
- if ( (ch[Offset+1]=='/') || (ch[Offset+2]=='/') )
- {
- Jour=atoi(&ch[Offset]);
- Offset=Offset+2;
- if (ch[Offset]=='/')
- Offset++;
- }
- else
- {
- Valide=FALSE;
- }
- /* Recherche du mois */
- if ( (ch[Offset+1]=='/') || (ch[Offset+2]=='/') )
- {
- Mois=atoi(&ch[Offset]);
- Offset=Offset+2;
- if (ch[Offset]=='/')
- Offset++;
- }
- else
- {
- Valide=FALSE;
- }
- /* Recherche de l'année */
- if (Valide)
- {
- Annee = atoi(&ch[Offset]);
- /* Année sur 2 chiffres ? */
- if (ch[Offset+2]=='\0')
- {
- Annee = Annee+1900;
- }
- Annee = Annee - 1900;
- }
-
- /* L'HORAIRE HH:MM:SS */
- if (ch_time)
- ValideH=TRUE;
- if (ValideH)
- {
- Offset=0;
- /* Recherche de l'heure */
- if ( (ch_time[Offset+1]==':') || (ch_time[Offset+2]==':') )
- {
- Heure=atoi(&ch_time[Offset]);
- Offset=Offset+2;
- if (ch_time[Offset]==':')
- Offset++;
- }
- else
- {
- ValideH=FALSE;
- }
- /* Recherche de la minute */
- if ( (ch_time[Offset+1]==':') || (ch_time[Offset+2]==':') ||
- (ch_time[Offset+2]=='\0') || (ch_time[Offset+2]=='\0') )
- {
- Minute=atoi(&ch_time[Offset]);
- Offset=Offset+2;
- if (ch_time[Offset]==':')
- Offset++;
- }
- else
- {
- ValideH=FALSE;
- }
- /* Recherche des secondes (facultatif!) */
- if (ValideH)
- {
- Seconde=atoi(&ch_time[Offset]);
- }
- }
-
- /* CALCUL DE LA VALEUR 32 BITS */
- if (Valide)
- {
- DateEnClair.tm_year = Annee;
- DateEnClair.tm_mon = Mois - 1;
- DateEnClair.tm_mday = Jour;
- DateEnClair.tm_isdst = 0; /*1;*/
- if (ValideH)
- {
- DateEnClair.tm_hour = Heure;
- DateEnClair.tm_min = Minute;
- DateEnClair.tm_sec = Seconde;
- }
- else
- {
- DateEnClair.tm_hour = 0;
- DateEnClair.tm_min = 0;
- DateEnClair.tm_sec = 0;
- }
- TimeRes = mktime(&DateEnClair);
- }
- return TimeRes;
- }
-
- /* Affichage de la trace */
- void show_trace(int NumTrace,time_t StartT,time_t EndT)
- {
- long NbrSamples;
- // long i;
- char FichierTrace[256];
- sprintf(FichierTrace,"Sites/%s/Trace%03d",Teletrans.SiteName,NumTrace);
- NbrSamples=load_trace_fm_disk(FichierTrace,StartT,EndT); /*,&TraHorodates,&TraValeurs);*/
- TraceGraph.NbrSamples=NbrSamples;
- show_trace_digital(FALSE,NbrSamples,TraceGraph.Horodates,TraceGraph.Valeurs);
- // for (i=0;i<NbrSamples;i++)
- // {
- // printf("Sample #%d => Date:%s (time_t=%u) Valeur:%f\n",i,ctime(&TraHorodates[i]),TraHorodates[i],TraValeurs[i]);
- // }
- }
-
- #ifdef GENERATE_GUI
- void refresh_trace_wanted(int NumTraceDemande,long GlissementDates)
- {
- int NumCycle;
- int NumTrace;
- char * DateDeb;
- char * TempsDeb;
- char * DateFin;
- char * TempsFin;
- time_t Tps32Deb,Tps32Fin;
- /* n° de trace actuellement affichée ? */
- get(App->ChoixTraces,MUIA_Cycle_Active,&NumCycle);
- NumTrace=atoi(TabLibellesTraces[NumCycle]);
- /* Trace demandée = sélectionnée ?*/
- if ( (NumTraceDemande==NumTrace) || (NumTraceDemande==0) )
- {
- int RfshAffiDates=FALSE;
- long TailleTps;
- time_t TailleTps32;
- time_t Tab[5]={24*3600,2*24*3600,7*24*3600,31*24*3600,0};
- get(App->Trace_DateStart,MUIA_String_Contents,&DateDeb);
- get(App->Trace_TimeStart,MUIA_String_Contents,&TempsDeb);
- get(App->Trace_DateEnd,MUIA_String_Contents,&DateFin);
- get(App->Trace_TimeEnd,MUIA_String_Contents,&TempsFin);
- Tps32Deb=convert_asciidate_to_long(DateDeb,TempsDeb);
- Tps32Fin=convert_asciidate_to_long(DateFin,TempsFin);
- /* Taille de la plage temporelle affichée */
- get(App->Trace_Range,MUIA_Cycle_Active,&TailleTps);
- TailleTps32=Tab[TailleTps];
- /* Demande de nouvelles dates de type 'Down' */
- if (GlissementDates==ID_TRACE_RANGEDOWN)
- {
- time_t ZoneTpsAutre;
- RfshAffiDates=TRUE;
- if (TailleTps32!=0)
- {
- Tps32Fin=Tps32Deb;
- Tps32Deb=Tps32Deb-TailleTps32;
- }
- else
- {
- ZoneTpsAutre=Tps32Fin-Tps32Deb;
- Tps32Fin=Tps32Deb;
- Tps32Deb=Tps32Deb-ZoneTpsAutre;
- }
- }
- /* Demande de nouvelles dates de type 'Up' */
- if (GlissementDates==ID_TRACE_RANGEUP)
- {
- time_t ZoneTpsAutre;
- RfshAffiDates=TRUE;
- if (TailleTps32!=0)
- {
- Tps32Deb=Tps32Fin;
- Tps32Fin=Tps32Fin+TailleTps32;
- }
- else
- {
- ZoneTpsAutre=Tps32Fin-Tps32Deb;
- Tps32Deb=Tps32Fin;
- Tps32Fin=Tps32Fin+ZoneTpsAutre;
- }
- }
- /* Demande de nouvelle plage temporelle, on recale le temps de fin */
- /* -ou- Saisie d'une nouvelle date de début, on recale la fin */
- if ( (GlissementDates==ID_TRACE_NEWRANGE) || (GlissementDates==ID_TRACE_START) )
- {
- if (TailleTps32!=0)
- {
- RfshAffiDates=TRUE;
- Tps32Fin=Tps32Deb+TailleTps32;
- }
- }
- /* Saisie d'une nouvelle date de fin, on recale le début */
- if (GlissementDates==ID_TRACE_END)
- {
- if (TailleTps32!=0)
- {
- RfshAffiDates=TRUE;
- Tps32Deb=Tps32Fin-TailleTps32;
- }
- }
- /* Mise à jour des champs dates à l'écran */
- if (RfshAffiDates)
- {
- char tmp[20];
- char tmp2[10];
- convert_long_to_asciidate(Tps32Deb,tmp,tmp2);
- set(App->Trace_DateStart,MUIA_String_Contents,tmp);
- set(App->Trace_TimeStart,MUIA_String_Contents,tmp2);
- convert_long_to_asciidate(Tps32Fin,tmp,tmp2);
- set(App->Trace_DateEnd,MUIA_String_Contents,tmp);
- set(App->Trace_TimeEnd,MUIA_String_Contents,tmp2);
- AffiGraphGene.Time32Deb=Tps32Deb;
- AffiGraphGene.Time32Fin=Tps32Fin;
- }
- show_trace(NumTrace,Tps32Deb,Tps32Fin);
- // DoMethod(App->GraphTrace,MUIM_Draw,MADF_DRAWOBJECT);
- // MUI_Redraw(App->GraphTrace,MADF_DRAWOBJECT);
- set(App->GraphTrace,SHOW_GRAPH,&TraceGraph);
- }
- }
- #endif
-
-
-
- /* ############################################################# */
- /* Choix d'un site, ou recherche du site avec lequel on vient de
- se connecter sur le disque */
- /* ############################################################# */
- int SelectSite(void)
- {
- struct FileLock * DirSite;
- char DrawerNameSite[256];
- FILE * PtrFileJrnlLoad;
- FILE * PtrFileRessLoad;
- FILE * PtrFileTraLoad;
- char FileName[256];
- int Fin;
- int i;
- char StringFile[256];
- char * StrTraceOffset;
- int ParamsOfSiteFnd=FALSE;
- #ifndef GENERATE_GUI
- printf("Nom du site:%s - Type:%s - Version:%s\n",Teletrans.SiteName,Teletrans.Type,Teletrans.Version);
- #else
- set(App->SiteName,MUIA_Text_Contents,Teletrans.SiteName);
- set(App->Type,MUIA_Text_Contents,Teletrans.Type);
- set(App->Version,MUIA_Text_Contents,Teletrans.Version);
- set(App->NumTelephone,MUIA_String_Contents,Teletrans.NumTel);
- #endif
- /* Nettoyage Messages */
- #ifdef GENERATE_GUI
- set(App->MessageTextNum0,MUIA_String_Contents,"");
- set(App->MessageTextNum1,MUIA_String_Contents,"");
- set(App->MessageTextNum2,MUIA_String_Contents,"");
- set(App->MessageTextNum3,MUIA_String_Contents,"");
- set(App->MessageTextNum4,MUIA_String_Contents,"");
- set(App->MessageTextNum5,MUIA_String_Contents,"");
- set(App->MessageTextNum6,MUIA_String_Contents,"");
- set(App->MessageTextNum7,MUIA_String_Contents,"");
- #endif
- /* Nettoyage Liste Journal et Liste Etats */
- #ifdef GENERATE_GUI
- DoMethod(App->ListJournal,MUIM_List_Clear);
- DoMethod(App->ListEtats,MUIM_List_Clear);
- set(App->ListEtats,MUIA_List_Quiet,TRUE);
- #endif
- /* Initialisation chaines Libellés/Etats des ressources */
- i=0;
- do
- {
- Ress[i].Libelle[0]='\0';
- Ress[i].Etat[0]='\0';
- #ifdef GENERATE_GUI
- DoMethod(App->ListEtats ,MUIM_List_InsertSingle,&Ress[i],MUIV_List_Insert_Bottom);
- #endif
- i++;
- }
- while(i<Teletrans.NumRessourcesMax);
- #ifdef GENERATE_GUI
- set(App->ListEtats,MUIA_List_Quiet,FALSE);
- #endif
- /* Initialisation du journal */
- NumLastEven_Journal=-1;
- DateLastEven_Journal[0]='\0';
- JrnlTaille=0;
- if (Jrnl)
- {
- free(Jrnl);
- Jrnl=NULL;
- }
- /* On regarde sur le disque dur si on connait ce site ... */
- strcpy(DrawerNameSite,"Sites/");
- strcat(DrawerNameSite,Teletrans.SiteName);
- DirSite= (struct FileLock *)Lock(DrawerNameSite,ACCESS_READ);
- if (DirSite!=NULL)
- {
- /* Site connu */
- /*------------*/
- UnLock((BPTR) DirSite);
- /* Lecture des libellés des ressources sauvés sur le disque */
- strcpy(FileName,"Sites/");
- strcat(FileName,Teletrans.SiteName);
- strcat(FileName,"/Ressources.txt");
- PtrFileRessLoad=fopen(FileName,"rt");
- if (PtrFileRessLoad!=NULL)
- {
- i=0;
- do
- {
- Fin=(int)fgets(StringFile,255,PtrFileRessLoad);
- if (Fin!=0)
- {
- strcpy_termnotnull(Ress[i].Libelle,StringFile,10,0);
- }
- i++;
- }
- while((Fin!=0)&&(i<NBR_RESSOURCES));
- fclose(PtrFileRessLoad);
- ParamsOfSiteFnd=TRUE;
- #ifdef GENERATE_GUI
- DoMethod(App->ListEtats,MUIM_List_Redraw,MUIV_List_Redraw_All);
- #endif
- }
-
- /* Lecture du journal sauvé sur le disque */
- strcpy(FileName,"Sites/");
- strcat(FileName,Teletrans.SiteName);
- strcat(FileName,"/Journal.txt");
- PtrFileJrnlLoad=fopen(FileName,"rt");
- if (PtrFileJrnlLoad!=NULL)
- {
- #ifdef GENERATE_GUI
- set(App->ListJournal,MUIA_List_Quiet,TRUE);
- #endif
- do
- {
- Fin=(int)fgets(StringFile,255,PtrFileJrnlLoad);
- if (Fin!=0)
- {
- NumLastEven_Journal=atol(StringFile);
- strcpy_termnotnull(DateLastEven_Journal,StringFile+5,9,0);
- AddEvenInJrnl(StringFile,FALSE);
- }
- }
- while(Fin!=0);
- fclose(PtrFileJrnlLoad);
- #ifdef GENERATE_GUI
- set(App->ListJournal,MUIA_List_Quiet,FALSE);
- #endif
- }
-
- /* Lecture du paramétrage des traces sauvé sur le disque */
- strcpy(FileName,"Sites/");
- strcat(FileName,Teletrans.SiteName);
- strcat(FileName,"/Traces.txt");
- PtrFileTraLoad=fopen(FileName,"rt");
- if (PtrFileTraLoad!=NULL)
- {
- i=1;
- do
- {
- Fin=(int)fgets(StringFile,255,PtrFileTraLoad);
- if (Fin!=0)
- {
- if(strlen(StringFile)>1)
- {
- Tra[i].Used='M';
- strcpy_termnotnull(Tra[i].NumMenu,StringFile,9,0);
- Tra[i].NumMenu[3]=' ';
- Tra[i].NumMenu[4]='-';
- Tra[i].NumMenu[5]=' ';
- StrTraceOffset=str_field(StringFile,128,10,'\t');
- if (StrTraceOffset)
- {
- strcpy_termnotnull(Tra[i].Libelle,StrTraceOffset,'\n','\t');
- }
- }
- else
- {
- Tra[i].Used='A';
- }
- }
- i++;
- }
- while((Fin!=0)&&(i<NBR_TRACES));
- fclose(PtrFileTraLoad);
- #ifdef GENERATE_GUI
- UpdateMUICycleTraces();
- refresh_trace_wanted(0,NULL); // Refresh de la trace sélectionnée
- #endif
- }
- else
- {
- ParamsOfSiteFnd=FALSE;
- }
- }
- return ParamsOfSiteFnd;
- }
-
-
- #ifdef GENERATE_GUI
- void ChoixSiteConnu(void)
- {
- long NumSiteChoisi;
- char * NomSite=ListeSitesConnus;
- int i;
- char FileName[256];
- char tmp[50];
- get(App->ListSavedSites,MUIA_List_Active,&NumSiteChoisi);
- // On cherche la chaine correspondante
- if (ListeSitesConnus)
- {
- for(i=0;i<NumSiteChoisi;i++)
- {
- do
- {
- NomSite++;
- }
- while(*NomSite!='\0');
- NomSite++;
- }
- strcpy(Teletrans.SiteName,NomSite);
-
- strcpy(FileName,"Sites/");
- strcat(FileName,Teletrans.SiteName);
- strcat(FileName,"/InfosSite.txt");
-
- ReadStringParamIni("TYPE","???",Teletrans.Type,FileName);
- ReadStringParamIni("VERSION","???",Teletrans.Version,FileName);
- ReadStringParamIni("TRSII_EXTENDED","FALSE",tmp,FileName);
- if (strcmp(tmp,"FALSE")==0)
- Teletrans.TRSII_Extended_Clip=FALSE;
- else
- Teletrans.TRSII_Extended_Clip=TRUE;
- Teletrans.NumRessourcesMax=ReadIntParamIni("RESSOURCES_NBR",100,FileName);
- Teletrans.NumTracesMax=ReadIntParamIni("TRACES_NBR",20,FileName);
- ReadStringParamIni("TELEPHONE","",Teletrans.NumTel,FileName);
- SelectSite();
- }
- }
- #endif
-
- #ifdef GENERATE_GUI
- /* ######################################################
- Mise à jour de la fenêtre contenant la liste des sites
- déjà appelés et sauvegardés sur le disque
- ###################################################### */
- void MiseAJourListeSitesConnus(void)
- {
- BPTR DirLock;
- struct FileInfoBlock FileInfo;
- char PasLaFin=TRUE;
- char SiteTmp[200];
- long LgtSites=0;
- int NbrSites=0;
- int SiteActuel=-1;
- int i;
- if (ListeSitesConnus!=NULL)
- {
- free(ListeSitesConnus);
- ListeSitesConnus=NULL;
- }
- DirLock=Lock("Sites",ACCESS_READ);
- if(DirLock)
- {
- PasLaFin=Examine(DirLock,&FileInfo);
- if (PasLaFin)
- {
- do
- {
- PasLaFin=ExNext(DirLock,&FileInfo);
- if (PasLaFin)
- {
- if (FileInfo.fib_DirEntryType>0) // c'est un répertoire ?
- {
- strcpy(SiteTmp,FileInfo.fib_FileName);
- if (strcmp(Teletrans.SiteName,SiteTmp)==0)
- SiteActuel=NbrSites;
- NbrSites++;
- // On est obligé de conserver les chaines en mémoire car MUI utilise un pointeur
- // sur la chaine passée en argument lors du DoMethod...
- if (ListeSitesConnus)
- {
- ListeSitesConnus=realloc(ListeSitesConnus,LgtSites+strlen(SiteTmp)+1);
- }
- else
- {
- ListeSitesConnus=malloc(strlen(SiteTmp)+1);
- ListeSitesConnus[0]=0;
- }
- if (ListeSitesConnus)
- {
- strcpy(ListeSitesConnus+LgtSites,SiteTmp);
- LgtSites=LgtSites+strlen(SiteTmp)+1;
- }
- }
- }
- }
- while(PasLaFin);
- }
- UnLock(DirLock);
- }
- DoMethod(App->ListSavedSites,MUIM_List_Clear);
- // On est obligé de le faire maintenant et on ne peux pas le faire au fur et à mesure
- // car les realloc empechent d'avoir les pointeurs sur les chaînes de stables...
- if (NbrSites)
- {
- char * NomSite=ListeSitesConnus;
- for (i=0;i<NbrSites;i++)
- {
- DoMethod(App->ListSavedSites,MUIM_List_InsertSingle,NomSite,MUIV_List_Insert_Bottom);
- do
- {
- NomSite++;
- }
- while(*NomSite!='\0');
- NomSite++;
- }
- if (SiteActuel!=-1)
- set(App->ListSavedSites,MUIA_List_Active,SiteActuel);
- }
- }
- #endif
-
- /* ############################### */
- /* # GESTION DU RAFRAICHISSEMENT # */
- /* # SUITE AUX DONNES RECUES # */
- /* ############################### */
- void gestion_refresh(char * EndOfStep,char * ParamFoundOnDisk,char FirstPassageInStep)
- {
- struct FileLock * DirSite;
- char DrawerNameSite[256];
- FILE * PtrFileJrnlSave;
- FILE * PtrFileRessSave;
- FILE * PtrFileTraSave;
- char FileName[300];
- char NumEvenStr[16];
- char tmp[50];
-
- if (RefreshType==RFH_IDENTITE)
- {
- int Fnd;
- Fnd=SelectSite();
- *ParamFoundOnDisk=Fnd;
- if (!Fnd)
- {
- /* Nouveau site */
- /*--------------*/
- strcpy(DrawerNameSite,"Sites/");
- strcat(DrawerNameSite,Teletrans.SiteName);
- DirSite=(struct FileLock *)CreateDir(DrawerNameSite);
- if (DirSite!=NULL)
- {
- UnLock((BPTR) DirSite);
- /* Sauvegarde des infos concernant le site */
- WriteStringParamIni("TYPE",Teletrans.Type,"T:ClipWatchCurrentSite");
- WriteStringParamIni("VERSION",Teletrans.Version,"T:ClipWatchCurrentSite");
- if (Teletrans.TRSII_Extended_Clip==FALSE)
- strcpy(tmp,"FALSE");
- else
- strcpy(tmp,"TRUE");
- WriteStringParamIni("TRSII_EXTENDED",tmp,"T:ClipWatchCurrentSite");
- WriteIntParamIni("RESSOURCES_NBR",Teletrans.NumRessourcesMax,"T:ClipWatchCurrentSite");
- WriteIntParamIni("TRACES_NBR",Teletrans.NumTracesMax,"T:ClipWatchCurrentSite");
- WriteStringParamIni("TELEPHONE",Teletrans.NumTel,"T:ClipWatchCurrentSite");
- strcpy(FileName,"copy T:ClipWatchCurrentSite \"Sites/");
- strcat(FileName,Teletrans.SiteName);
- strcat(FileName,"/InfosSite.txt\"");
- system(FileName);
- remove("T:ClipWatchCurrentSite");
- /* On met à jour la liste des sites connus */
- #ifdef GENERATE_GUI
- MiseAJourListeSitesConnus();
- #endif
- }
- else
- {
- ErrorMessageRequest("Nouveau site impossible à créer");
- }
- }
- }
-
- if (RefreshType==RFH_DATE)
- {
- #ifndef GENERATE_GUI
- printf("Date locale:%s\n",Teletrans.LocalDate);
- #else
- set(App->Date,MUIA_Text_Contents,Teletrans.LocalDate);
- #endif
- }
-
- if (RefreshType==RFH_TIME)
- {
- #ifndef GENERATE_GUI
- printf("Heure locale:%s\n",Teletrans.LocalTime);
- #else
- set(App->Time,MUIA_Text_Contents,Teletrans.LocalTime);
- #endif
- }
-
- if (RefreshType==RFH_JOURNAL)
- {
- /* Plus d'événement ? */
- if (strcmp(Even_Journal,"FIN")==0)
- {
- *EndOfStep=TRUE;
- }
- else
- {
- strcpy_termnotnull(NumEvenStr,Even_Journal,13,9);
- /* Lors de la première lecture via la date, il faut vérifier qu'il s'agit
- bien d'un événement inconnu */
- if ( (!FirstPassageInStep) || (NumLastEven_Journal!=atol(NumEvenStr)) )
- {
- #ifndef GENERATE_GUI
- printf("%s\n",Even_Journal);
- #else
- AddEvenInJrnl(Even_Journal,TRUE);
- #endif
- /* Sauvegarde sur le disque de l'événement */
- strcpy(FileName,"Sites/");
- strcat(FileName,Teletrans.SiteName);
- strcat(FileName,"/Journal.txt");
- PtrFileJrnlSave=fopen(FileName,"at");
- if (PtrFileJrnlSave!=NULL)
- {
- fprintf(PtrFileJrnlSave,"%s\n",Even_Journal);
- fclose(PtrFileJrnlSave);
- }
- else
- {
- ErrorMessageRequest("Sauvegarde journal impossible");
- *EndOfStep=TRUE;
- }
- NumLastEven_Journal=atol(NumEvenStr);
- }
- }
- }
-
- if (RefreshType==RFH_LIBELLE_RESS)
- {
- strcpy(FileName,"Sites/");
- strcat(FileName,Teletrans.SiteName);
- strcat(FileName,"/Ressources.txt");
- #ifdef GENERATE_GUI
- DoMethod(App->ListEtats,MUIM_List_Redraw,RefreshParam);
- #endif
- /* Si première ressource, init.fichier sinon rajout */
- if (RefreshParam>0)
- {
- PtrFileRessSave=fopen(FileName,"at");
- }
- else
- {
- PtrFileRessSave=fopen(FileName,"wt");
- }
- if (PtrFileRessSave!=NULL)
- {
- fprintf(PtrFileRessSave,"%s\n",Ress[RefreshParam].Libelle);
- fclose(PtrFileRessSave);
- }
- else
- {
- if (RefreshParam==0)
- {
- ErrorMessageRequest("Sauvegarde libellés ressources impossible");
- }
- }
- /* Dernière ressource ? */
- if (RefreshParam==Teletrans.NumRessourcesMax-1)
- {
- *EndOfStep=TRUE;
- }
- }
-
- if (RefreshType==RFH_PARAM_TRACE)
- {
- /* Plus de traces (dépassement capacité télétrans en nbr de traces) ? */
- if (RefreshParam==0)
- {
- *EndOfStep=TRUE;
- }
- strcpy(FileName,"Sites/");
- strcat(FileName,Teletrans.SiteName);
- strcat(FileName,"/Traces.txt");
- /* Si première trace, init.fichier sinon rajout */
- if (RefreshParam>1)
- {
- PtrFileTraSave=fopen(FileName,"at");
- }
- else
- {
- PtrFileTraSave=fopen(FileName,"wt");
- }
- if (PtrFileTraSave!=NULL)
- {
- fprintf(PtrFileTraSave,"%s\n",Param_Trace);
- fclose(PtrFileTraSave);
- }
- else
- {
- if (RefreshParam==1)
- {
- ErrorMessageRequest("Sauvegarde paramétrage traces impossible");
- }
- }
- /* Dernière trace ? */
- if (RefreshParam==Teletrans.NumTracesMax-1)
- {
- /* Rafraichissement du gadget cyclique contenant tous les noms de traces */
- #ifdef GENERATE_GUI
- UpdateMUICycleTraces();
- #endif
- *EndOfStep=TRUE;
- }
- }
-
- if (RefreshType==RFH_ETAT_RESS)
- {
- #ifdef GENERATE_GUI
- DoMethod(App->ListEtats,MUIM_List_Redraw,RefreshParam);
- #endif
- }
-
- if (RefreshType==RFH_MESSAGEBOX)
- {
- #ifdef GENERATE_GUI
- switch(RefreshParam)
- {
- case 0:
- set(App->MessageTextNum0,MUIA_String_Contents,MessagesBox[RefreshParam]);
- set(App->MessageTextNum0,MUIA_String_BufferPos,0);
- break;
- case 1:
- set(App->MessageTextNum1,MUIA_String_Contents,MessagesBox[RefreshParam]);
- set(App->MessageTextNum1,MUIA_String_BufferPos,0);
- break;
- case 2:
- set(App->MessageTextNum2,MUIA_String_Contents,MessagesBox[RefreshParam]);
- set(App->MessageTextNum2,MUIA_String_BufferPos,0);
- break;
- case 3:
- set(App->MessageTextNum3,MUIA_String_Contents,MessagesBox[RefreshParam]);
- set(App->MessageTextNum3,MUIA_String_BufferPos,0);
- break;
- case 4:
- set(App->MessageTextNum4,MUIA_String_Contents,MessagesBox[RefreshParam]);
- set(App->MessageTextNum4,MUIA_String_BufferPos,0);
- break;
- case 5:
- set(App->MessageTextNum5,MUIA_String_Contents,MessagesBox[RefreshParam]);
- set(App->MessageTextNum5,MUIA_String_BufferPos,0);
- break;
- case 6:
- set(App->MessageTextNum6,MUIA_String_Contents,MessagesBox[RefreshParam]);
- set(App->MessageTextNum6,MUIA_String_BufferPos,0);
- break;
- case 7:
- set(App->MessageTextNum7,MUIA_String_Contents,MessagesBox[RefreshParam]);
- set(App->MessageTextNum7,MUIA_String_BufferPos,0);
- break;
- }
- #else
- printf("Message n°%d => %s\n",RefreshParam,MessagesBox[RefreshParam]);
- #endif
- /* Dernière boite aux lettres ? */
- if (RefreshParam==NBR_MESSAGESBOX-1)
- {
- *EndOfStep=TRUE;
- }
- }
-
- if (RefreshType==RFH_TRACE)
- {
- /* Plus de traces (dépassement capacité télétrans en nbr de traces)? */
- if (RefreshParam==0)
- {
- *EndOfStep=TRUE;
- }
- else
- {
- #ifdef GENERATE_GUI
- refresh_trace_wanted(RefreshParam,NULL);
- #endif
- }
- }
-
- RefreshType=0;
- }
-
- /* ######################################### */
- /* # GESTION DU DIALOGUE AVEC LA TELETRANS # */
- /* ######################################### */
- void gestion_dialogue(int NewConnexion)
- {
- static int Step=0;
- static char StepFirstPassage=TRUE;
- static char StepDone=FALSE;
- static char WaitingResponse=FALSE;
- static char ParamSiteSaved=FALSE;
- static char CurrentRequest[64];
- static int CurrentRequestLgt;
- static int LgtTrameRecue;
- static unsigned long LaunchTime;
- static int BaseTimeOut;
- int TrameReponseOk;
- static int CurrentAttemps;
- static int NumRessALire;
- char NumRessALireStr[16];
- static char FirstJournalLoading=TRUE;
-
- char NumEvenStr[16];
-
- if (NewConnexion)
- {
- Step=0;
- StepFirstPassage=TRUE;
- StepDone=FALSE;
- WaitingResponse=FALSE;
- ParamSiteSaved=FALSE;
- FirstJournalLoading=TRUE;
- }
-
- if ( (WaitingResponse) || (StepDone) )
- {
- /* On attend la réponse ... */
- if (WaitingResponse)
- {
- TrameReponseOk=receive_request_trsii(CurrentRequest,CurrentRequestLgt,&LaunchTime,&CurrentAttemps,TrameRecue,&LgtTrameRecue,BaseTimeOut);
- if (TrameReponseOk==TRUE)
- {
- WaitingResponse=FALSE;
- gestion_refresh(&StepDone,&ParamSiteSaved,StepFirstPassage);
- StepFirstPassage=FALSE;
- }
- }
- /* Etape Terminée ? => Nouvelle étape */
- if ( (StepDone)&&(!(WaitingResponse)) )
- {
- Step++;
- StepFirstPassage=TRUE;
- StepDone=FALSE;
- /* Pas de lecture des libellés des ressources / du paramétrage des traces */
- /* si sauvés sur disque */
- if ( ((Step==3)||(Step==4)) && (ParamSiteSaved==TRUE) )
- {
- Step=5;
- }
- /* Pas de récupération des messages si pas choisi dans préférences */
- if ( (Step==5) && (!(RecupDesMessages)) )
- {
- Step++;
- }
- /* On ne peut pas récupérer le journal avec un Force + choix dans préférences */
- if ( (Step==8) && ( (Teletrans.TRSII_Extended_Clip==FALSE)||(!(RecupDuJournal)) ) )
- {
- Step++;
- }
- /* On ne récupère pas les traces avec un Force */
- if ( (Step==10) && (!RecupDesTraces||(Teletrans.TRSII_Extended_Clip==FALSE)) )
- {
- Step++;
- }
- if (Step==11)
- {
- #ifndef GENERATE_GUI
- for(NumRessALire=0;NumRessALire<20;NumRessALire++)
- {
- printf("Ress:%d => %s \t %s\n",NumRessALire,Ress[NumRessALire].Libelle,Ress[NumRessALire].Etat);
- }
- printf("Raccroche...\n");
- hangup_modem();
- TeletransOnLine=FALSE;
- #else
- Step=7;
- #endif
- }
- }
- }
- else
- {
- /* On pose une nouvelle question ! */
- switch(Step)
- {
- case 0:
- /* FORCAGE MODE TRSII */
- /* ------------------ */
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"OTHER","W06","",&LaunchTime,&BaseTimeOut);
- Delay(20);
- Step++;
- break;
-
- case 1:
- /* PASSAGE CODE D'ACCES */
- /* -------------------- */
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"ACCES",Teletrans.Password,"",&LaunchTime,&BaseTimeOut);
- CurrentAttemps=3;
- LgtTrameRecue=0;
- WaitingResponse=TRUE;
- StepDone=TRUE;
- break;
-
- case 2:
- /* DEMANDE IDENTITE STATION */
- /* ------------------------ */
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"IDENT?","","",&LaunchTime,&BaseTimeOut);
- CurrentAttemps=3;
- LgtTrameRecue=0;
- WaitingResponse=TRUE;
- StepDone=TRUE;
- break;
-
- case 3:
- /* LECTURE LIBELLES RESSOURCES */
- /* --------------------------- */
- if (StepFirstPassage==TRUE)
- {
- NumRessALire=0;
- }
- else
- {
- NumRessALire++;
- }
- sprintf(NumRessALireStr,"%0d",NumRessALire);
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"RESS?",NumRessALireStr,"",&LaunchTime,&BaseTimeOut);
- CurrentAttemps=3;
- LgtTrameRecue=0;
- WaitingResponse=TRUE;
- break;
-
- case 4:
- /* LECTURE PARAMETRAGE TRACES */
- /* -------------------------- */
- if (StepFirstPassage==TRUE)
- {
- NumRessALire=1;
- }
- else
- {
- NumRessALire++;
- }
- sprintf(NumRessALireStr,"%0d",NumRessALire);
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"TP?",NumRessALireStr,"",&LaunchTime,&BaseTimeOut);
- CurrentAttemps=3;
- LgtTrameRecue=0;
- WaitingResponse=TRUE;
- break;
-
- case 5:
- /* LECTURE DES MESSAGES DE LA BOITE */
- /* -------------------------------- */
- if (StepFirstPassage==TRUE)
- {
- NumRessALire=0;
- }
- else
- {
- NumRessALire++;
- }
- sprintf(NumRessALireStr,"%0d",NumRessALire);
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"MESS?",NumRessALireStr,"",&LaunchTime,&BaseTimeOut);
- CurrentAttemps=3;
- LgtTrameRecue=0;
- WaitingResponse=TRUE;
- break;
-
- case 6:
- /* DEMANDE DATE LOCALE */
- /* ------------------- */
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"DATE?","","",&LaunchTime,&BaseTimeOut);
- CurrentAttemps=3;
- LgtTrameRecue=0;
- WaitingResponse=TRUE;
- StepDone=TRUE;
- break;
-
- case 7:
- /* DEMANDE HEURE LOCALE */
- /* ------------------- */
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"TIME?","","",&LaunchTime,&BaseTimeOut);
- CurrentAttemps=3;
- LgtTrameRecue=0;
- WaitingResponse=TRUE;
- StepDone=TRUE;
- break;
-
- case 8:
- /* LECTURE DU JOURNAL */
- /* ------------------ */
- /* On ne connait aucun événement ? */
- if (NumLastEven_Journal==-1)
- {
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"J?","","",&LaunchTime,&BaseTimeOut);
- }
- else
- {
- if (FirstJournalLoading)
- {
- /* On veut l'événement suivant la date du dernier événement connu */
- /* On reçoit un "Token incorrect" si jamais il y a un trou dans les index */
- /* d'événements en passant par la commande J? #index */
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"J?",DateLastEven_Journal,"",&LaunchTime,&BaseTimeOut);
- FirstJournalLoading=FALSE;
- }
- else
- {
- /* On veux l'événement suivant LastNumEven */
- /* Attention, numéro d'événement sur 4 caractères!!! */
- NumEvenStr[0]='#';
- RealToStrWithZeros(NumEvenStr+1,4,NumLastEven_Journal);
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"J?",NumEvenStr,"",&LaunchTime,&BaseTimeOut);
- }
- }
- CurrentAttemps=3;
- LgtTrameRecue=0;
- WaitingResponse=TRUE;
- break;
-
- case 9:
- /* LECTURE ETATS DES RESSOURCES */
- /* ---------------------------- */
- if (StepFirstPassage==TRUE)
- {
- NumRessALire=-1;
- }
- do
- {
- NumRessALire++;
- }
- while( (Ress[NumRessALire].Libelle[0]=='\0') && (NumRessALire<(Teletrans.NumRessourcesMax-1)) );
- if (NumRessALire<Teletrans.NumRessourcesMax)
- {
- sprintf(NumRessALireStr,"%0d",NumRessALire);
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"ETAT?",NumRessALireStr,"",&LaunchTime,&BaseTimeOut);
- CurrentAttemps=3;
- LgtTrameRecue=0;
- WaitingResponse=TRUE;
- }
- else
- {
- StepDone=TRUE;
- }
- break;
-
- case 10:
- /* LECTURE DES TRACES */
- /* ------------------- */
- if (StepFirstPassage==TRUE)
- {
- NumRessALire=0;
- }
- do
- {
- NumRessALire++;
- }
- while( (Tra[NumRessALire].Used!='M') && (NumRessALire<(Teletrans.NumTracesMax-1)) );
- if (NumRessALire<Teletrans.NumTracesMax-1)
- {
- sprintf(NumRessALireStr,"%0d",NumRessALire);
- send_request_trsii(CurrentRequest,&CurrentRequestLgt,"T?",NumRessALireStr,"",&LaunchTime,&BaseTimeOut);
- CurrentAttemps=3;
- LgtTrameRecue=0;
- WaitingResponse=TRUE;
- }
- else
- {
- StepDone=TRUE;
- }
- break;
-
-
- }
- }
- }
-
-
-
-
- /*-----------------------------*/
- /* MAIN */
- /*-----------------------------*/
-
- int main(int argc, char *argv[])
- {
- char Quitter=FALSE;
- #ifdef GENERATE_GUI
- ULONG signal;
- char *StrContents;
- #endif
- char InitStringForModem[128]="";
- int Result;
- unsigned long StartTimeOfCnx=0;
- char TimeOfCnxString[10+50];
- int TimeOfCnx=0;
- int TimeOfCnx_bak=0;
- char tmp[50];
- char tmp2[50];
- char * AboutMsg;
- char SignalConnexion=FALSE;
-
-
- Mem_AllocAll();
-
- IntuitionBase = (struct Library *)OpenLibrary("intuition.library",37);
- if (!IntuitionBase)
- exit(5);
- GfxBase = (struct Library *)OpenLibrary("graphics.library",37);
- if (!GfxBase)
- exit(5);
- UtilityBase = (struct Library *)OpenLibrary("utility.library",37);
- if (!UtilityBase)
- exit(5);
-
- /* Lecture des préférences */
- ReadStringParamIni("DEVICE","serial.device",SerialDevice,"ENV:ClipWatch.prefs");
- SerialUnit=ReadIntParamIni("UNIT",0,"ENV:ClipWatch.prefs");
- SerialSpeed=ReadIntParamIni("SPEED",1200,"ENV:ClipWatch.prefs");
- ReadStringParamIni("INITSTRINGMODEM","",InitStringForModem,"ENV:ClipWatch.prefs");
- RecupDuJournal=ReadIntParamIni("GETLOG",TRUE,"ENV:ClipWatch.prefs");
- RecupDesMessages=ReadIntParamIni("GETMSG",TRUE,"ENV:ClipWatch.prefs");
- RecupDesTraces=ReadIntParamIni("GETTRA",TRUE,"ENV:ClipWatch.prefs");
- MoniteurActif=ReadIntParamIni("MONITOR",FALSE,"ENV:ClipWatch.prefs");
- MoniteurMode=ReadIntParamIni("MONITORTYPE",1,"ENV:ClipWatch.prefs");
-
- strcpy(Teletrans.SiteName,"");
- TraceGraph.Horodates=NULL;
- TraceGraph.Valeurs=NULL;
- TraceGraph.NbrSamples=0;
-
- #ifdef GENERATE_GUI
- init();
- if (!(mccgraph = MUI_CreateCustomClass(NULL,MUIC_Area,NULL,sizeof(struct GraphClassData),MyDispatcher)))
- {
- printf(NULL,"Could not create custom class.");
- Mem_FreeAll();
- exit(30);
- }
- App=CreateApp();
-
- /* Réglage par défaut pour la visualisation de la trace calé sur la date du jour */
- /* (j'ai vu le côté exploitation dans une entreprise...) */
- convert_long_to_asciidate(timenow()-23*3600,tmp,tmp2);
- set(App->Trace_DateStart,MUIA_String_Contents,tmp);
- set(App->Trace_TimeStart,MUIA_String_Contents,tmp2);
- AffiGraphGene.Time32Deb=timenow()-23*3600;
- convert_long_to_asciidate(timenow()+3600,tmp,tmp2);
- set(App->Trace_DateEnd,MUIA_String_Contents,tmp);
- set(App->Trace_TimeEnd,MUIA_String_Contents,tmp2);
- AffiGraphGene.Time32Fin=timenow()+3600;
- set(App->GraphTrace,SHOW_GRAPH,&TraceGraph);
- MiseAJourListeSitesConnus();
- #endif
-
- Serial_OpenAll();
-
-
- do
- {
-
- #ifndef GENERATE_GUI
-
- printf("N° de téléphone de la télétrans à appeler:");
- scanf("%s",Teletrans.NumTel);
- if (strcmp(Teletrans.NumTel,"x")==0)
- {
- Quitter = TRUE;
- }
- if (Quitter==FALSE)
- {
- printf("Mot de passe:");
- scanf("%s",Teletrans.Password);
- if ((SerialInitOk==TRUE)&&(strlen(Teletrans.NumTel)>0))
- {
- /* INIT.MODEM WITH INIT.STRING */
- /* --------------------------- */
- DisplayStatus("Init.modem");
- if (init_modem(InitStringForModem)==FALSE)
- {
- ErrorMessageRequest("Init.modem failed");
- }
- else
- {
- int ResultCall;
-
- /* CALLING THE SITE AND ESTABLISHING THE LINE */
- /* ------------------------------------------ */
- DisplayStatus("Calling...");
- call_modem(Teletrans.NumTel,TRUE);
- do
- {
- ResultCall = call_modem(Teletrans.NumTel,FALSE);
- Delay(50);
- }
- while(ResultCall==FALSE);
- if (ResultCall!=TRUE)
- {
- hangup_modem();
- ErrorMessageRequest("Failed to connect");
- }
- else
- {
- TeletransOnLine=TRUE;
- gestion_dialogue(TRUE);
-
- do
- {
- gestion_dialogue(FALSE);
- Delay(3);
- }
- while(TeletransOnLine);
- }
- }
- }
- Delay(240);
- Quitter=TRUE;
- }
-
- #else
-
- switch (DoMethod(App->App,MUIM_Application_Input,&signal))
- {
- case MUIV_Application_ReturnID_Quit:
- Quitter = TRUE;
- break;
- case ID_MENU_ABOUT:
- AboutMsg=malloc(4000);
- if (AboutMsg)
- {
- sprintf(AboutMsg,"ClipWatch %s\nDernière révision:%s\n\nOutil pour appeler des télétransmissions Clip/Force (WIT)\n© 1999-2000 Marc Le Douarain\nmavati@club-internet.fr",VERSION,COMPILATION_DATE);
- MUI_Request(App->App, App->WI_Main, 0, NULL, "OK", AboutMsg);
- free(AboutMsg);
- }
- break;
- case ID_MENU_ABOUTMUI:
- if(!WI_AboutMUI)
- WI_AboutMUI=AboutmuiObject,MUIA_Window_RefWindow,App->WI_Main,MUIA_Aboutmui_Application,App->App,End;
- if(WI_AboutMUI)
- set(WI_AboutMUI,MUIA_Window_Open,TRUE);
- else
- DisplayBeep(0);
- break;
- case ID_PREFS_WINDOWOPENED:
- {
- char SpdTmp[50];
- char tmp[30];
- set(App->Prefs_InitStringModem,MUIA_String_Contents,InitStringForModem);
- set(App->Prefs_Device,MUIA_String_Contents,SerialDevice);
- sprintf(tmp,"%d",SerialUnit);
- set(App->Prefs_Unit,MUIA_String_Contents,tmp);
- sprintf(SpdTmp,"%d",SerialSpeed);
- set(App->Prefs_Vitesse,MUIA_Cycle_Active,GetMUICycleToSet(App->Prefs_VitesseContent,SpdTmp));
- set(App->Prefs_RecupJournal,MUIA_Selected,RecupDuJournal);
- set(App->Prefs_RecupMessages,MUIA_Selected,RecupDesMessages);
- set(App->Prefs_RecupTraces,MUIA_Selected,RecupDesTraces);
- set(App->Prefs_Monitor,MUIA_Selected,MoniteurActif);
- set(App->Prefs_Monitor_Type,MUIA_Cycle_Active,MoniteurMode-1);
- break;
- }
- case ID_PREFS_TOSAVE:
- /* Sauvegarde des préférences sur le disque dur */
- system("copy ENV:ClipWatch.prefs ENVARC:ClipWatch.prefs");
- break;
- case ID_PREFS_CHANGED:
- {
- long numcyc;
- char * txt;
- get(App->Prefs_InitStringModem,MUIA_String_Contents,&txt);
- strcpy(InitStringForModem,txt);
- get(App->Prefs_Device,MUIA_String_Contents,&txt);
- strcpy(SerialDevice,txt);
- get(App->Prefs_Unit,MUIA_String_Contents,&txt);
- SerialUnit=atoi(txt);
- get(App->Prefs_Vitesse,MUIA_Cycle_Active,&numcyc);
- SerialSpeed=atoi(GetMUICycleString(App->Prefs_VitesseContent,numcyc));
- get(App->Prefs_RecupJournal,MUIA_Selected,&RecupDuJournal);
- get(App->Prefs_RecupMessages,MUIA_Selected,&RecupDesMessages);
- get(App->Prefs_RecupTraces,MUIA_Selected,&RecupDesTraces);
- get(App->Prefs_Monitor,MUIA_Selected,&MoniteurActif);
- get(App->Prefs_Monitor_Type,MUIA_Cycle_Active,&MoniteurMode);
- MoniteurMode++;
- /* Sauvegarde des préférences en RAM */
- WriteStringParamIni("DEVICE",SerialDevice,"ENV:ClipWatch.prefs");
- WriteIntParamIni("UNIT",SerialUnit,"ENV:ClipWatch.prefs");
- WriteIntParamIni("SPEED",SerialSpeed,"ENV:ClipWatch.prefs");
- WriteStringParamIni("INITSTRINGMODEM",InitStringForModem,"ENV:ClipWatch.prefs");
- WriteIntParamIni("GETLOG",RecupDuJournal,"ENV:ClipWatch.prefs");
- WriteIntParamIni("GETMSG",RecupDesMessages,"ENV:ClipWatch.prefs");
- WriteIntParamIni("GETTRA",RecupDesTraces,"ENV:ClipWatch.prefs");
- WriteIntParamIni("MONITOR",MoniteurActif,"ENV:ClipWatch.prefs");
- WriteIntParamIni("MONITORTYPE",MoniteurMode,"ENV:ClipWatch.prefs");
- break;
- }
- case ID_MENU_PREFSMUI:
- DoMethod(App->App,MUIM_Application_OpenConfigWindow,0);
- break;
- case ID_SAVED_SITE_SELECTED:
- set(App->WI_SelectSite,MUIA_Window_Sleep,TRUE);
- ChoixSiteConnu();
- set(App->WI_SelectSite,MUIA_Window_Sleep,FALSE);
- break;
- case ID_BUTTON_DISCONNECT:
- if ((TeletransOnLine)||(TeletransOnCall))
- {
- DisplayStatus("Raccroche...");
- hangup_modem();
- TeletransOnLine=FALSE;
- TeletransOnCall=FALSE;
- SignalConnexion=FALSE;
- strcpy(TimeOfCnxString,"--:--");
- set(App->ComTime,MUIA_Text_Contents,TimeOfCnxString);
- DisplayStatus("Prêt...");
- set(App->SelectSiteSaved,MUIA_Disabled,FALSE);
- }
- break;
- case ID_BUTTON_CONNECT:
- get(App->NumTelephone,MUIA_String_Contents,&StrContents);
- strcpy(Teletrans.NumTel,StrContents);
- get(App->Password,MUIA_String_Contents,&StrContents);
- strcpy(Teletrans.Password,StrContents);
- if ((SerialInitOk==TRUE)&&(strlen(Teletrans.NumTel)>0)&&(strlen(Teletrans.Password)>0))
- {
- /* INIT.MODEM WITH INIT.STRING - bloquant */
- DisplayStatus("Init.modem");
- if (init_modem(InitStringForModem)==FALSE)
- {
- ErrorMessageRequest("Echec Init.modem");
- }
- else
- {
- /* CALLING THE SITE AND ESTABLISHING THE LINE - non bloquant */
- DisplayStatus("Appel...");
- TeletransOnCall=TRUE;
- call_modem(Teletrans.NumTel,TRUE);
- }
- }
- else
- {
- ErrorMessageRequest("Numéro de téléphone/Mot de passe incorrects!!!");
- }
- break;
- case ID_TRACE_REFRESH:
- {
- refresh_trace_wanted(0,NULL); // Refresh de la trace sélectionnée
- break;
- }
- case ID_TRACE_START:
- {
- refresh_trace_wanted(0,ID_TRACE_START); // Refresh de la trace sélectionnée
- break;
- }
- case ID_TRACE_END:
- {
- refresh_trace_wanted(0,ID_TRACE_END); // Refresh de la trace sélectionnée
- break;
- }
- case ID_TRACE_RANGEDOWN:
- {
- refresh_trace_wanted(0,ID_TRACE_RANGEDOWN); // Refresh de la trace sélectionnée
- break;
- }
- case ID_TRACE_RANGEUP:
- {
- refresh_trace_wanted(0,ID_TRACE_RANGEUP); // Refresh de la trace sélectionnée
- break;
- }
- case ID_TRACE_NEWRANGE:
- {
- refresh_trace_wanted(0,ID_TRACE_NEWRANGE); // Refresh de la trace sélectionnée
- break;
- }
- }
- /* Gestion communication en cours */
- if (TeletransOnLine)
- {
- gestion_dialogue(FALSE);
- /* Le petit compteur du temps */
- TimeOfCnx=get_timer_secs()-StartTimeOfCnx;
- if (TimeOfCnx!=TimeOfCnx_bak)
- {
- sprintf(TimeOfCnxString,"%d:%2d",TimeOfCnx/60,TimeOfCnx%60);
- set(App->ComTime,MUIA_Text_Contents,TimeOfCnxString);
- TimeOfCnx_bak=TimeOfCnx;
- }
- if (!SignalConnexion)
- set(App->SelectSiteSaved,MUIA_Disabled,TRUE);
- SignalConnexion=TRUE;
- }
- /* On vient de se déconnecter suite à des erreurs... */
- if ( (TeletransOnLine==FALSE) && (SignalConnexion==TRUE) )
- {
- ErrorMessageRequest("Perte de connexion avec le site...");
- strcpy(TimeOfCnxString,"--:--");
- set(App->ComTime,MUIA_Text_Contents,TimeOfCnxString);
- DisplayStatus("Prêt...");
- set(App->SelectSiteSaved,MUIA_Disabled,FALSE);
- SignalConnexion=FALSE;
- }
- /* Gestion de l'appel en cours */
- if (TeletransOnCall)
- {
- Result=call_modem(Teletrans.NumTel,FALSE);
- if ( (Result!=FALSE) && (Result!=TRUE) )
- {
- hangup_modem();
- if (Result==3)
- ErrorMessageRequest("Ligne téléphonique du site occupée");
- else
- ErrorMessageRequest("Echec à l'appel");
- TeletransOnCall=FALSE;
- }
- if (Result==TRUE)
- {
- TeletransOnCall=FALSE;
- TeletransOnLine=TRUE;
- StartTimeOfCnx=get_timer_secs();
- gestion_dialogue(TRUE);
- }
- }
- // if (!(Quitter) && signal)
- // Wait(signal);
- Delay(3);
-
- #endif
-
- }
- while(Quitter==FALSE);
- Appli_CloseAll();
- #ifdef GENERATE_GUI
- if (App)
- {
- DisposeApp(App);
- MUI_DeleteCustomClass(mccgraph);
- CloseLibrary(MUIMasterBase);
- }
-
- #endif
-
- if (!IntuitionBase)
- CloseLibrary(IntuitionBase);
- if (!GfxBase)
- CloseLibrary(GfxBase);
- if (!UtilityBase)
- CloseLibrary(UtilityBase);
- Mem_FreeAll();
- free_trace(&TraceGraph.Horodates,&TraceGraph.Valeurs);
- exit(0);
- }
-